package com.petmarket.contract;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.fisco.bcos.sdk.v3.client.Client;
import org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray;
import org.fisco.bcos.sdk.v3.codec.datatypes.Event;
import org.fisco.bcos.sdk.v3.codec.datatypes.Function;
import org.fisco.bcos.sdk.v3.codec.datatypes.Type;
import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference;
import org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int256;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int32;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple1;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple2;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple4;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple7;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple8;
import org.fisco.bcos.sdk.v3.contract.Contract;
import org.fisco.bcos.sdk.v3.crypto.CryptoSuite;
import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair;
import org.fisco.bcos.sdk.v3.eventsub.EventSubCallback;
import org.fisco.bcos.sdk.v3.model.CryptoType;
import org.fisco.bcos.sdk.v3.model.TransactionReceipt;
import org.fisco.bcos.sdk.v3.model.callback.TransactionCallback;
import org.fisco.bcos.sdk.v3.transaction.manager.transactionv1.ProxySignTransactionManager;
import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException;

@SuppressWarnings("unchecked")
public class PetContract extends Contract {
    public static final String[] BINARY_ARRAY = {"60806040523480156200001157600080fd5b506040805160078082526101008201909252600091816020015b60608152602001906001900390816200002b579050509050604051806040016040528060088152602001677065745f6e616d6560c01b815250816000815181106200007a576200007a620003e8565b6020026020010181905250604051806040016040528060088152602001677065745f7479706560c01b81525081600181518110620000bc57620000bc620003e8565b6020026020010181905250604051806040016040528060098152602001681cd95b1b195c97da5960ba1b81525081600281518110620000ff57620000ff620003e8565b6020026020010181905250604051806040016040528060098152602001687065745f707269636560b81b81525081600381518110620001425762000142620003e8565b60200260200101819052506040518060400160405280600681526020016573746174757360d01b81525081600481518110620001825762000182620003e8565b6020026020010181905250604051806040016040528060068152602001651a5b59d55c9b60d21b81525081600581518110620001c257620001c2620003e8565b60200260200101819052506040518060400160405280600a8152602001691a5cd7d9195b195d195960b21b81525081600681518110620002065762000206620003e8565b602002602001018190525060006040518060600160405280600180811115620002335762000233620003fe565b8152602001604051806040016040528060068152602001651c195d17da5960d21b81525081526020018381525090506110026001600160a01b03166375b14eea6040518060400160405280600a8152602001693832ba2fba30b136329960b11b815250836040518363ffffffff1660e01b8152600401620002b692919062000464565b6020604051808303816000875af1158015620002d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fc91906200052c565b50604080518082018252600a8152693832ba2fba30b136329960b11b6020820152905163f23f63c960e01b81526000916110029163f23f63c991620003449160040162000558565b602060405180830381865afa15801562000362573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038891906200056d565b90506001600160a01b038116620003bf5760405162461bcd60e51b8152602060048201526000602482015260440160405180910390fd5b600080546001600160a01b0319166001600160a01b039290921691909117905550620005989050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156200043c576020818501810151868301820152016200041e565b818111156200044f576000602083870101525b50601f01601f19169290920160200192915050565b60408152600062000479604083018562000414565b602083820381850152845160028110620004a357634e487b7160e01b600052602160045260246000fd5b8083525080850151606082840152620004c0606084018262000414565b90506040860151838203604085015281935080518083528383019450838160051b840101848301925060005b828110156200051e57601f198583030187526200050b82855162000414565b96860196938601939150600101620004ec565b509998505050505050505050565b6000602082840312156200053f57600080fd5b81518060030b81146200055157600080fd5b9392505050565b60208152600062000551602083018462000414565b6000602082840312156200058057600080fd5b81516001600160a01b03811681146200055157600080fd5b61249480620005a86000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063b2beeb9011610066578063b2beeb901461013c578063b7c288361461014f578063db5c2fab14610175578063eb18b48714610188578063f575cda01461019b57600080fd5b8063428ffbbb146100a357806355f150f1146100cc5780636776b697146100e257806383190847146101085780638cc77e7e1461011b575b600080fd5b6100b66100b13660046117d6565b6101c3565b6040516100c391906118bd565b60405180910390f35b6100d46104ee565b6040516100c39291906118d7565b6100f56100f03660046119e7565b610592565b60405160039190910b81526020016100c3565b6100f5610116366004611b12565b6107f3565b61012e610129366004611c3b565b610b47565b6040519081526020016100c3565b6100f561014a3660046117d6565b610c5d565b61016261015d366004611d49565b610ec0565b6040516100c39796959493929190611d64565b6100f56101833660046117d6565b6110c9565b6100f5610196366004611d49565b6113e3565b6101ae6101a93660046117d6565b61157c565b60405163ffffffff90911681526020016100c3565b60408051808201825260008082526101f46020830152825160028082526060828101909552816020015b6102126040805160608101909152806000815260200160608152602001606081525090565b8152602001906001900390816101ed5790505060408051606081018252600081528151808301835260068152651c195d17da5960d21b602080830191909152820152815163ecb6fef360e01b8152600789900b6004820152929350919082019061100f9063ecb6fef390602401600060405180830381865afa15801561029c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102c49190810190611e56565b815250816000815181106102da576102da611e8a565b60209081029190910101526040805160608101909152806003815260408051808201825260068152651c195d17da5960d21b602080830191909152830152805163ecb6fef360e01b8152600788900b600482015291019061100f9063ecb6fef390602401600060405180830381865afa15801561035b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103839190810190611e56565b8152508160018151811061039957610399611e8a565b602090810291909101015260008054604051632a92244160e01b81526001600160a01b0390911690632a922441906103d79085908790600401611f37565b600060405180830381865afa1580156103f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261041c9190810190612074565b9050600081516001600160401b03811115610439576104396118fc565b60405190808252806020026020018201604052801561046c57816020015b60608152602001906001900390816104575790505b50905060005b81518110156104e35782818151811061048d5761048d611e8a565b6020026020010151602001516000815181106104ab576104ab611e8a565b60200260200101518282815181106104c5576104c5611e8a565b602002602001018190525080806104db90612124565b915050610472565b509695505050505050565b604080518082018252600a8152693832ba2fba30b136329960b11b6020820152905163b8764d3f60e01b815260609182916000916110029163b8764d3f916105389160040161214d565b600060405180830381865afa158015610555573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261057d9190810190612160565b90508060200151816040015192509250509091565b604080518082019182905263ecb6fef360e01b909152600789900b604482015260009081908061100f63ecb6fef360648301600060405180830381865afa1580156105e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106099190810190611e56565b8152604080516007808252610100820190925260209092019190816020015b606081526020019060019003908161062857905050815250905088816020015160008151811061065a5761065a611e8a565b602002602001018190525087816020015160018151811061067d5761067d611e8a565b60200260200101819052508681602001516002815181106106a0576106a0611e8a565b60200260200101819052508581602001516003815181106106c3576106c3611e8a565b60200260200101819052508481602001516004815181106106e6576106e6611e8a565b602002602001018190525083816020015160058151811061070957610709611e8a565b602002602001018190525082816020015160068151811061072c5761072c611e8a565b602090810291909101015260008054604051635c6e105f60e01b81526001600160a01b0390911690635c6e105f9061076890859060040161224f565b6020604051808303816000875af1158015610787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ab9190612288565b604051600382900b81529091507fc57b01fa77f41df77eaab79a0e2623fab2e7ae3e9530d9b1cab225ad65f2b7ce9060200160405180910390a19a9950505050505050505050565b60408051600680825260e08201909252600091829190816020015b604080518082019091526060808252602082015281526020019060019003908161080e575050604080516080810182526008918101918252677065745f6e616d6560c01b6060820152908152602081018a9052815191925090829060009061087857610878611e8a565b60200260200101819052506040518060400160405280604051806040016040528060088152602001677065745f7479706560c01b815250815260200188815250816001815181106108cb576108cb611e8a565b60200260200101819052506040518060400160405280604051806040016040528060098152602001681cd95b1b195c97da5960ba1b8152508152602001878152508160028151811061091f5761091f611e8a565b60200260200101819052506040518060400160405280604051806040016040528060098152602001687065745f707269636560b81b8152508152602001868152508160038151811061097357610973611e8a565b602002602001018190525060405180604001604052806040518060400160405280600681526020016573746174757360d01b815250815260200185815250816004815181106109c4576109c4611e8a565b60200260200101819052506040518060400160405280604051806040016040528060068152602001651a5b59d55c9b60d21b81525081526020018481525081600581518110610a1557610a15611e8a565b60209081029190910101526000805460405163ecb6fef360e01b815260078c900b60048201526001600160a01b03909116906341ffd75f9061100f9063ecb6fef390","602401600060405180830381865afa158015610a77573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a9f9190810190611e56565b846040518363ffffffff1660e01b8152600401610abd929190612319565b6020604051808303816000875af1158015610adc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b009190612288565b604051600382900b81529091507f8e5890af40fc24a059396aca2f83d6ce41fcef086876548fa4fb8ec27e9d292a9060200160405180910390a19998505050505050505050565b600060ff84161580610b5c57508360ff166001145b610b6557600080fd5b60008460ff1660011415610b77575060015b60006040518060600160405280836001811115610b9657610b96611dfb565b815260208101879052604090810186905251633ad8a77560e11b8152909150600090611002906375b14eea90610bd2908b90869060040161233e565b6020604051808303816000875af1158015610bf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c159190612288565b604051600382900b81529091507fb5636cd912a73dcdb5b570dbe331dfa3e6435c93e029e642def2c8e40dacf2109060200160405180910390a160030b979650505050505050565b60408051808201825260008082526101f4602083015282516002808252606082019094529092839190816020015b610cb06040805160608101909152806000815260200160608152602001606081525090565b815260200190600190039081610c8b5790505060408051606081018252600081528151808301835260068152651c195d17da5960d21b602080830191909152820152815163ecb6fef360e01b8152600789900b6004820152929350919082019061100f9063ecb6fef390602401600060405180830381865afa158015610d3a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d629190810190611e56565b81525081600081518110610d7857610d78611e8a565b60209081029190910101526040805160608101909152806003815260408051808201825260068152651c195d17da5960d21b602080830191909152830152805163ecb6fef360e01b8152600788900b600482015291019061100f9063ecb6fef390602401600060405180830381865afa158015610df9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e219190810190611e56565b81525081600181518110610e3757610e37611e8a565b602090810291909101015260005460405163a726071760e01b81526001600160a01b039091169063a726071790610e749084908690600401611f37565b6020604051808303816000875af1158015610e93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb79190612288565b95945050505050565b6000805460405163ecb6fef360e01b8152600784900b6004820152606092839283928392839283928392916001600160a01b03169063fcd7e3c19061100f9063ecb6fef390602401600060405180830381865afa158015610f25573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f4d9190810190611e56565b6040518263ffffffff1660e01b8152600401610f69919061214d565b600060405180830381865afa158015610f86573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fae91908101906123ac565b90506060806060806060806060876020015151600714156110b1578760200151600081518110610fe057610fe0611e8a565b60200260200101519650876020015160018151811061100157611001611e8a565b60200260200101519550876020015160028151811061102257611022611e8a565b60200260200101519450876020015160038151811061104357611043611e8a565b60200260200101519350876020015160048151811061106457611064611e8a565b60200260200101519250876020015160058151811061108557611085611e8a565b6020026020010151915087602001516006815181106110a6576110a6611e8a565b602002602001015190505b959f949e50929c50909a509850965090945092505050565b604080516001808252818301909252600091829190816020015b60408051808201909152606080825260208201528152602001906001900390816110e357905050905060405180604001604052806040518060400160405280600681526020016573746174757360d01b8152508152602001604051806040016040528060078152602001661d5c19185d195960ca1b8152508152508160008151811061117157611171611e8a565b60209081029190910181019190915260408051808201825260008082526101f4828501528251600280825260608201909452919390929082015b6111d06040805160608101909152806000815260200160608152602001606081525090565b8152602001906001900390816111ab5790505060408051606081018252600081528151808301835260068152651c195d17da5960d21b602080830191909152820152815163ecb6fef360e01b815260078a900b6004820152929350919082019061100f9063ecb6fef390602401600060405180830381865afa15801561125a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112829190810190611e56565b8152508160008151811061129857611298611e8a565b60209081029190910101526040805160608101909152806003815260408051808201825260068152651c195d17da5960d21b602080830191909152830152805163ecb6fef360e01b8152600789900b600482015291019061100f9063ecb6fef390602401600060405180830381865afa158015611319573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113419190810190611e56565b8152508160018151811061135757611357611e8a565b6020908102919091010152600054604051634c9260bf60e11b81526001600160a01b0390911690639924c17e90611396908490869088906004016123e0565b6020604051808303816000875af11580156113b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d99190612288565b9695505050505050565b604080516001808252818301909252600091829190816020015b60408051808201909152606080825260208201528152602001906001900390816113fd57905050905060405180604001604052806040518060400160405280600a8152602001691a5cd7d9195b195d195960b21b8152508152602001604051806040016040528060018152602001603160f81b8152508152508160008151811061148957611489611e8a565b60209081029190910101526000805460405163ecb6fef360e01b8152600786900b60048201526001600160a01b03909116906341ffd75f9061100f9063ecb6fef390602401600060405180830381865afa1580156114eb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115139190810190611e56565b846040518363ffffffff1660e01b8152600401611531929190612319565b6020604051808303816000875af1158015611550573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115749190612288565b949350505050565b60408051600280825260608201909252600091829190816020015b6115bc6040805160608101909152806000815260200160608152602001606081525090565b8152602001906001900390816115975790505060408051606081018252600081528151808301835260068152651c195d17da5960d21b602080830191909152820152815163ecb6fef360e01b8152600788900b6004820152929350919082019061100f9063ecb6fef390602401600060405180830381865afa158015611646573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261166e9190810190611e56565b8152508160008151811061168457611684611e8a565b60209081029190910101526040805160608101909152806003815260408051808201825260068152651c195d17da5960d21b602080830191909152830152805163ecb6fef360e01b8152600787900b600482015291019061100f9063ecb6fef390602401600060405180830381865afa158015611705573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261172d9190810190611e56565b8152508160018151811061174357611743611e8a565b602090810291909101015260005460405163da46335f60e01b81526001600160a01b039091169063da46335f9061177e908490600401612425565b602060405180830381865afa15801561179b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115749190612438565b8035600781900b81146117d157600080fd5b919050565b600080604083850312156117e957600080fd5b6117f2836117bf565b9150611800602084016117bf565b90509250929050565b60005b8381101561182457818101518382015260200161180c565b83811115611833576000848401525b50505050565b60008151808452611851816020860160208601611809565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b848110156118b057601f1986840301895261189e838351611839565b98840198925090830190600101611882565b5090979650505050505050565b6020815260006118d06020830184611865565b9392505050565b6040815260006118ea6040830185611839565b8281036020840152610eb78185611865565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715611934576119346118fc565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611962576119626118fc565b604052919050565b60006001600160401b03821115611983576119836118fc565b50601f01601f191660200190565b600082601f8301126119a257600080fd5b81356119b56119b08261196a565b61193a565b8181528460208386010111156119ca57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080610100898b031215611a0457600080fd5b611a0d896117bf565b975060208901356001600160401b0380821115611a2957600080fd5b611a358c838d01611991565b985060408b0135915080821115611a4b57600080fd5b611a578c838d01611991565b","975060608b0135915080821115611a6d57600080fd5b611a798c838d01611991565b965060808b0135915080821115611a8f57600080fd5b611a9b8c838d01611991565b955060a08b0135915080821115611ab157600080fd5b611abd8c838d01611991565b945060c08b0135915080821115611ad357600080fd5b611adf8c838d01611991565b935060e08b0135915080821115611af557600080fd5b50611b028b828c01611991565b9150509295985092959890939650565b600080600080600080600060e0888a031215611b2d57600080fd5b611b36886117bf565b965060208801356001600160401b0380821115611b5257600080fd5b611b5e8b838c01611991565b975060408a0135915080821115611b7457600080fd5b611b808b838c01611991565b965060608a0135915080821115611b9657600080fd5b611ba28b838c01611991565b955060808a0135915080821115611bb857600080fd5b611bc48b838c01611991565b945060a08a0135915080821115611bda57600080fd5b611be68b838c01611991565b935060c08a0135915080821115611bfc57600080fd5b50611c098a828b01611991565b91505092959891949750929550565b60006001600160401b03821115611c3157611c316118fc565b5060051b60200190565b60008060008060808587031215611c5157600080fd5b84356001600160401b0380821115611c6857600080fd5b611c7488838901611991565b9550602091508187013560ff81168114611c8d57600080fd5b9450604087013581811115611ca157600080fd5b611cad89828a01611991565b945050606087013581811115611cc257600080fd5b8701601f81018913611cd357600080fd5b8035611ce16119b082611c18565b81815260059190911b8201840190848101908b831115611d0057600080fd5b8584015b83811015611d3857803586811115611d1c5760008081fd5b611d2a8e8983890101611991565b845250918601918601611d04565b50989b979a50959850505050505050565b600060208284031215611d5b57600080fd5b6118d0826117bf565b60e081526000611d7760e083018a611839565b8281036020840152611d89818a611839565b90508281036040840152611d9d8189611839565b90508281036060840152611db18188611839565b90508281036080840152611dc58187611839565b905082810360a0840152611dd98186611839565b905082810360c0840152611ded8185611839565b9a9950505050505050505050565b634e487b7160e01b600052602160045260246000fd5b600082601f830112611e2257600080fd5b8151611e306119b08261196a565b818152846020838601011115611e4557600080fd5b611574826020830160208701611809565b600060208284031215611e6857600080fd5b81516001600160401b03811115611e7e57600080fd5b61157484828501611e11565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501808196508360051b8101915082860160005b85811015611f2a57828403895281516060815160098110611ee157611ee1611dfb565b865281870151878701829052611ef982880182611839565b91505060408083015192508682038188015250611f168183611839565b9a87019a9550505090840190600101611ebe565b5091979650505050505050565b606081526000611f4a6060830185611ea0565b90506118d06020830184805163ffffffff908116835260209182015116910152565b600082601f830112611f7d57600080fd5b81516020611f8d6119b083611c18565b82815260059290921b84018101918181019086841115611fac57600080fd5b8286015b848110156104e35780516001600160401b03811115611fcf5760008081fd5b611fdd8986838b0101611e11565b845250918301918301611fb0565b600060408284031215611ffd57600080fd5b604051604081016001600160401b038282108183111715612020576120206118fc565b81604052829350845191508082111561203857600080fd5b61204486838701611e11565b8352602085015191508082111561205a57600080fd5b5061206785828601611f6c565b6020830152505092915050565b6000602080838503121561208757600080fd5b82516001600160401b038082111561209e57600080fd5b818501915085601f8301126120b257600080fd5b81516120c06119b082611c18565b81815260059190911b830184019084810190888311156120df57600080fd5b8585015b83811015612117578051858111156120fb5760008081fd5b6121098b89838a0101611feb565b8452509186019186016120e3565b5098975050505050505050565b600060001982141561214657634e487b7160e01b600052601160045260246000fd5b5060010190565b6020815260006118d06020830184611839565b60006020828403121561217257600080fd5b81516001600160401b038082111561218957600080fd5b908301906060828603121561219d57600080fd5b6121a5611912565b8251600281106121b457600080fd5b81526020830151828111156121c857600080fd5b6121d487828601611e11565b6020830152506040830151828111156121ec57600080fd5b6121f887828601611f6c565b60408301525095945050505050565b600081518084526020808501808196508360051b8101915082860160005b85811015611f2a57828403895261223d848351611839565b98850198935090840190600101612225565b60208152600082516040602084015261226b6060840182611839565b90506020840151601f19848303016040850152610eb78282612207565b60006020828403121561229a57600080fd5b81518060030b81146118d057600080fd5b600081518084526020808501808196508360051b8101915082860160005b85811015611f2a5782840389528151604081518187526122eb82880182611839565b915050868201519150858103878701526123058183611839565b9a87019a95505050908401906001016122c9565b60408152600061232c6040830185611839565b8281036020840152610eb781856122ab565b6040815260006123516040830185611839565b828103602084015283516002811061236b5761236b611dfb565b808252506020840151606060208301526123886060830182611839565b9050604085015182820360408401526123a18282612207565b979650505050505050565b6000602082840312156123be57600080fd5b81516001600160401b038111156123d457600080fd5b61157484828501611feb565b6080815260006123f36080830186611ea0565b6124136020840186805163ffffffff908116835260209182015116910152565b82810360608401526113d981856122ab565b6020815260006118d06020830184611ea0565b60006020828403121561244a57600080fd5b815163ffffffff811681146118d057600080fdfea2646970667358221220891c2bf11ffeba4e5dbb9d72c91dcf0c7e60b681b5d3554a10829d45268abf0564736f6c634300080b0033"};

    public static final String BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", BINARY_ARRAY);

    public static final String[] SM_BINARY_ARRAY = {"60806040523480156200001157600080fd5b506040805160078082526101008201909252600091816020015b60608152602001906001900390816200002b579050509050604051806040016040528060088152602001677065745f6e616d6560c01b815250816000815181106200007a576200007a620003e9565b6020026020010181905250604051806040016040528060088152602001677065745f7479706560c01b81525081600181518110620000bc57620000bc620003e9565b6020026020010181905250604051806040016040528060098152602001681cd95b1b195c97da5960ba1b81525081600281518110620000ff57620000ff620003e9565b6020026020010181905250604051806040016040528060098152602001687065745f707269636560b81b81525081600381518110620001425762000142620003e9565b60200260200101819052506040518060400160405280600681526020016573746174757360d01b81525081600481518110620001825762000182620003e9565b6020026020010181905250604051806040016040528060068152602001651a5b59d55c9b60d21b81525081600581518110620001c257620001c2620003e9565b60200260200101819052506040518060400160405280600a8152602001691a5cd7d9195b195d195960b21b81525081600681518110620002065762000206620003e9565b602002602001018190525060006040518060600160405280600180811115620002335762000233620003ff565b8152602001604051806040016040528060068152602001651c195d17da5960d21b81525081526020018381525090506110026001600160a01b031663f6d7201d6040518060400160405280600a8152602001693832ba2fba30b136329960b11b815250836040518363ffffffff1660e01b8152600401620002b692919062000465565b6020604051808303816000875af1158015620002d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fc91906200052d565b50604080518082018252600a8152693832ba2fba30b136329960b11b602082015290516359a48b6560e01b8152600091611002916359a48b6591620003449160040162000559565b602060405180830381865afa15801562000362573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038891906200056e565b90506001600160a01b038116620003c057604051636381e58960e11b8152602060048201526000602482015260440160405180910390fd5b600080546001600160a01b0319166001600160a01b039290921691909117905550620005999050565b63b95aa35560e01b600052603260045260246000fd5b63b95aa35560e01b600052602160045260246000fd5b6000815180845260005b818110156200043d576020818501810151868301820152016200041f565b8181111562000450576000602083870101525b50601f01601f19169290920160200192915050565b6040815260006200047a604083018562000415565b602083820381850152845160028110620004a45763b95aa35560e01b600052602160045260246000fd5b8083525080850151606082840152620004c1606084018262000415565b90506040860151838203604085015281935080518083528383019450838160051b840101848301925060005b828110156200051f57601f198583030187526200050c82855162000415565b96860196938601939150600101620004ed565b509998505050505050505050565b6000602082840312156200054057600080fd5b81518060030b81146200055257600080fd5b9392505050565b60208152600062000552602083018462000415565b6000602082840312156200058157600080fd5b81516001600160a01b03811681146200055257600080fd5b61248080620005a96000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638226599511610066578063822659951461014d5780638af4602c14610160578063909fb8bd14610186578063d5c698f314610199578063d9e5ab6e146101ac57600080fd5b80630575a21d146100a35780632682a07c146100c957806334e5f909146100f1578063753582a41461011157806382083cca14610127575b600080fd5b6100b66100b13660046118c9565b6101bf565b6040519081526020015b60405180910390f35b6100dc6100d73660046119ee565b6102d5565b60405163ffffffff90911681526020016100c0565b6101046100ff3660046119ee565b610520565b6040516100c09190611ad5565b61011961084b565b6040516100c0929190611aef565b61013a6101353660046119ee565b6108ef565b60405160039190910b81526020016100c0565b61013a61015b366004611b14565b610b52565b61017361016e366004611c1a565b610ea6565b6040516100c09796959493929190611c35565b61013a610194366004611c1a565b6110af565b61013a6101a73660046119ee565b611240565b61013a6101ba366004611ccc565b61155a565b600060ff841615806101d457508360ff166001145b6101dd57600080fd5b60008460ff16600114156101ef575060015b6000604051806060016040528083600181111561020e5761020e611df7565b81526020810187905260409081018690525163f6d7201d60e01b81529091506000906110029063f6d7201d9061024a908b908690600401611e52565b6020604051808303816000875af1158015610269573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028d9190611ec0565b604051600382900b81529091507f38411b2ef21b6826a8b9f48a1baa6b3388c3354ebdc5db749b35830ec581722d9060200160405180910390a160030b979650505050505050565b60408051600280825260608201909252600091829190816020015b6103156040805160608101909152806000815260200160608152602001606081525090565b8152602001906001900390816102f05790505060408051606081018252600081528151808301835260068152651c195d17da5960d21b60208083019190915282015281516361cd959d60e11b8152600788900b6004820152929350919082019061100f9063c39b2b3a90602401600060405180830381865afa15801561039f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103c79190810190611f28565b815250816000815181106103dd576103dd611f5c565b60209081029190910101526040805160608101909152806003815260408051808201825260068152651c195d17da5960d21b60208083019190915283015280516361cd959d60e11b8152600787900b600482015291019061100f9063c39b2b3a90602401600060405180830381865afa15801561045e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104869190810190611f28565b8152508160018151811061049c5761049c611f5c565b6020908102919091010152600054604051633a081ed360e11b81526001600160a01b03909116906374103da6906104d7908490600401611fff565b602060405180830381865afa1580156104f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105189190612012565b949350505050565b60408051808201825260008082526101f46020830152825160028082526060828101909552816020015b61056f6040805160608101909152806000815260200160608152602001606081525090565b81526020019060019003908161054a5790505060408051606081018252600081528151808301835260068152651c195d17da5960d21b60208083019190915282015281516361cd959d60e11b8152600789900b6004820152929350919082019061100f9063c39b2b3a90602401600060405180830381865afa1580156105f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106219190810190611f28565b8152508160008151811061063757610637611f5c565b60209081029190910101526040805160608101909152806003815260408051808201825260068152651c195d17da5960d21b60208083019190915283015280516361cd959d60e11b8152600788900b600482015291019061100f9063c39b2b3a90602401600060405180830381865afa1580156106b8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106e09190810190611f28565b815250816001815181106106f6576106f6611f5c565b60209081029190910101526000805460405163087c36d360e01b81526001600160a01b039091169063087c36d3906107349085908790600401612038565b600060405180830381865afa158015610751573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107799190810190612175565b9050600081516001600160401b03811115610796576107966117bb565b6040519080825280602002602001820160405280156107c957816020015b60608152602001906001900390816107b45790505b50905060005b8151811015610840578281815181106107ea576107ea611f5c565b60200260200101516020015160008151811061080857610808611f5c565b602002602001015182828151811061082257610822611f5c565b6020026020010181905250808061083890612225565b9150506107cf565b509695505050505050565b604080518082018252600a8152693832ba2fba30b136329960b11b602082015290516361bb9b7160e11b815260609182916000916110029163c37736e2916108959160040161224e565b600060405180830381865afa1580156108b2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108da9190810190612261565b90508060200151816040015192509250509091565b60408051808201825260008082526101f4602083015282516002808252606082019094529092839190816020015b6109426040805160608101909152806000815260200160608152602001606081525090565b81526020019060019003908161091d5790505060408051606081018252600081528151808301835260068152651c195d17da5960d21b60208083019190915282015281516361cd959d60e11b8152600789900b6004820152929350919082019061100f9063c39b2b3a90602401600060405180830381865afa1580156109cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109f49190810190611f28565b81525081600081518110610a0a57610a0a611f5c565b60209081029190910101526040805160608101909152806003815260408051808201825260068152651c195d17da5960d21b60208083019190915283015280516361cd959d60e11b81526007","88900b600482015291019061100f9063c39b2b3a90602401600060405180830381865afa158015610a8b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ab39190810190611f28565b81525081600181518110610ac957610ac9611f5c565b60209081029190910101526000546040516339c964e160e01b81526001600160a01b03909116906339c964e190610b069084908690600401612038565b6020604051808303816000875af1158015610b25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b499190611ec0565b95945050505050565b60408051600680825260e08201909252600091829190816020015b6040805180820190915260608082526020820152815260200190600190039081610b6d575050604080516080810182526008918101918252677065745f6e616d6560c01b6060820152908152602081018a90528151919250908290600090610bd757610bd7611f5c565b60200260200101819052506040518060400160405280604051806040016040528060088152602001677065745f7479706560c01b81525081526020018881525081600181518110610c2a57610c2a611f5c565b60200260200101819052506040518060400160405280604051806040016040528060098152602001681cd95b1b195c97da5960ba1b81525081526020018781525081600281518110610c7e57610c7e611f5c565b60200260200101819052506040518060400160405280604051806040016040528060098152602001687065745f707269636560b81b81525081526020018681525081600381518110610cd257610cd2611f5c565b602002602001018190525060405180604001604052806040518060400160405280600681526020016573746174757360d01b81525081526020018581525081600481518110610d2357610d23611f5c565b60200260200101819052506040518060400160405280604051806040016040528060068152602001651a5b59d55c9b60d21b81525081526020018481525081600581518110610d7457610d74611f5c565b6020908102919091010152600080546040516361cd959d60e11b815260078c900b60048201526001600160a01b03909116906301fa804c9061100f9063c39b2b3a90602401600060405180830381865afa158015610dd6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dfe9190810190611f28565b846040518363ffffffff1660e01b8152600401610e1c929190612373565b6020604051808303816000875af1158015610e3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5f9190611ec0565b604051600382900b81529091507fd72ab475a08df05fbd4f7f8cb4db1ad9dbdc26f54437fa6794acd97357779d2a9060200160405180910390a19998505050505050505050565b600080546040516361cd959d60e11b8152600784900b6004820152606092839283928392839283928392916001600160a01b031690635b325d789061100f9063c39b2b3a90602401600060405180830381865afa158015610f0b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f339190810190611f28565b6040518263ffffffff1660e01b8152600401610f4f919061224e565b600060405180830381865afa158015610f6c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f949190810190612398565b9050606080606080606080606087602001515160071415611097578760200151600081518110610fc657610fc6611f5c565b602002602001015196508760200151600181518110610fe757610fe7611f5c565b60200260200101519550876020015160028151811061100857611008611f5c565b60200260200101519450876020015160038151811061102957611029611f5c565b60200260200101519350876020015160048151811061104a5761104a611f5c565b60200260200101519250876020015160058151811061106b5761106b611f5c565b60200260200101519150876020015160068151811061108c5761108c611f5c565b602002602001015190505b959f949e50929c50909a509850965090945092505050565b604080516001808252818301909252600091829190816020015b60408051808201909152606080825260208201528152602001906001900390816110c957905050905060405180604001604052806040518060400160405280600a8152602001691a5cd7d9195b195d195960b21b8152508152602001604051806040016040528060018152602001603160f81b8152508152508160008151811061115557611155611f5c565b6020908102919091010152600080546040516361cd959d60e11b8152600786900b60048201526001600160a01b03909116906301fa804c9061100f9063c39b2b3a90602401600060405180830381865afa1580156111b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111df9190810190611f28565b846040518363ffffffff1660e01b81526004016111fd929190612373565b6020604051808303816000875af115801561121c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105189190611ec0565b604080516001808252818301909252600091829190816020015b604080518082019091526060808252602082015281526020019060019003908161125a57905050905060405180604001604052806040518060400160405280600681526020016573746174757360d01b8152508152602001604051806040016040528060078152602001661d5c19185d195960ca1b815250815250816000815181106112e8576112e8611f5c565b60209081029190910181019190915260408051808201825260008082526101f4828501528251600280825260608201909452919390929082015b6113476040805160608101909152806000815260200160608152602001606081525090565b8152602001906001900390816113225790505060408051606081018252600081528151808301835260068152651c195d17da5960d21b60208083019190915282015281516361cd959d60e11b815260078a900b6004820152929350919082019061100f9063c39b2b3a90602401600060405180830381865afa1580156113d1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113f99190810190611f28565b8152508160008151811061140f5761140f611f5c565b60209081029190910101526040805160608101909152806003815260408051808201825260068152651c195d17da5960d21b60208083019190915283015280516361cd959d60e11b8152600789900b600482015291019061100f9063c39b2b3a90602401600060405180830381865afa158015611490573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114b89190810190611f28565b815250816001815181106114ce576114ce611f5c565b6020908102919091010152600054604051630341b28360e01b81526001600160a01b0390911690630341b2839061150d908490869088906004016123cc565b6020604051808303816000875af115801561152c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115509190611ec0565b9695505050505050565b60408051808201918290526361cd959d60e11b909152600789900b604482015260009081908061100f63c39b2b3a60648301600060405180830381865afa1580156115a9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115d19190810190611f28565b8152604080516007808252610100820190925260209092019190816020015b60608152602001906001900390816115f057905050815250905088816020015160008151811061162257611622611f5c565b602002602001018190525087816020015160018151811061164557611645611f5c565b602002602001018190525086816020015160028151811061166857611668611f5c565b602002602001018190525085816020015160038151811061168b5761168b611f5c565b60200260200101819052508481602001516004815181106116ae576116ae611f5c565b60200260200101819052508381602001516005815181106116d1576116d1611f5c565b60200260200101819052508281602001516006815181106116f4576116f4611f5c565b6020908102919091010152600080546040516304c8b95360e41b81526001600160a01b0390911690634c8b953090611730908590600401612411565b6020604051808303816000875af115801561174f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117739190611ec0565b604051600382900b81529091507fdfc533ec2b52797a1229dc2495dbd3f4948f7c4c982ec077ad9d80810ec5c1f99060200160405180910390a19a9950505050505050505050565b63b95aa35560e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156117f3576117f36117bb565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611821576118216117bb565b604052919050565b60006001600160401b03821115611842576118426117bb565b50601f01601f191660200190565b600082601f83011261186157600080fd5b813561187461186f82611829565b6117f9565b81815284602083860101111561188957600080fd5b816020850160208301376000918101602001919091529392505050565b60006001600160401b038211156118bf576118bf6117bb565b5060051b60200190565b600080600080608085870312156118df57600080fd5b84356001600160401b03808211156118f657600080fd5b61190288838901611850565b9550602091508187013560ff8116811461191b57600080fd5b945060408701358181111561192f57600080fd5b61193b89828a01611850565b94505060608701358181111561195057600080fd5b8701601f8101891361196157600080fd5b803561196f61186f826118a6565b81815260059190911b8201840190848101908b83111561198e57600080fd5b8584015b838110156119c6578035868111156119aa5760008081fd5b6119b88e8983890101611850565b845250918601918601611992565b50989b979a50959850505050505050565b8035600781900b81146119e957600080fd5b919050565b60008060408385031215611a0157600080fd5b611a0a836119d7565b9150611a18602084016119d7565b90509250929050565b60005b83811015611a3c578181015183820152602001611a24565b83811115611a4b576000848401525b50505050565b6000815180","8452611a69816020860160208601611a21565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015611ac857601f19868403018952611ab6838351611a51565b98840198925090830190600101611a9a565b5090979650505050505050565b602081526000611ae86020830184611a7d565b9392505050565b604081526000611b026040830185611a51565b8281036020840152610b498185611a7d565b600080600080600080600060e0888a031215611b2f57600080fd5b611b38886119d7565b965060208801356001600160401b0380821115611b5457600080fd5b611b608b838c01611850565b975060408a0135915080821115611b7657600080fd5b611b828b838c01611850565b965060608a0135915080821115611b9857600080fd5b611ba48b838c01611850565b955060808a0135915080821115611bba57600080fd5b611bc68b838c01611850565b945060a08a0135915080821115611bdc57600080fd5b611be88b838c01611850565b935060c08a0135915080821115611bfe57600080fd5b50611c0b8a828b01611850565b91505092959891949750929550565b600060208284031215611c2c57600080fd5b611ae8826119d7565b60e081526000611c4860e083018a611a51565b8281036020840152611c5a818a611a51565b90508281036040840152611c6e8189611a51565b90508281036060840152611c828188611a51565b90508281036080840152611c968187611a51565b905082810360a0840152611caa8186611a51565b905082810360c0840152611cbe8185611a51565b9a9950505050505050505050565b600080600080600080600080610100898b031215611ce957600080fd5b611cf2896119d7565b975060208901356001600160401b0380821115611d0e57600080fd5b611d1a8c838d01611850565b985060408b0135915080821115611d3057600080fd5b611d3c8c838d01611850565b975060608b0135915080821115611d5257600080fd5b611d5e8c838d01611850565b965060808b0135915080821115611d7457600080fd5b611d808c838d01611850565b955060a08b0135915080821115611d9657600080fd5b611da28c838d01611850565b945060c08b0135915080821115611db857600080fd5b611dc48c838d01611850565b935060e08b0135915080821115611dda57600080fd5b50611de78b828c01611850565b9150509295985092959890939650565b63b95aa35560e01b600052602160045260246000fd5b6000815180845260208085019450848260051b860182860160005b85811015611ac8578383038952611e40838351611a51565b98850198925090840190600101611e28565b604081526000611e656040830185611a51565b8281036020840152835160028110611e7f57611e7f611df7565b80825250602084015160606020830152611e9c6060830182611a51565b905060408501518282036040840152611eb58282611e0d565b979650505050505050565b600060208284031215611ed257600080fd5b81518060030b8114611ae857600080fd5b600082601f830112611ef457600080fd5b8151611f0261186f82611829565b818152846020838601011115611f1757600080fd5b610518826020830160208701611a21565b600060208284031215611f3a57600080fd5b81516001600160401b03811115611f5057600080fd5b61051884828501611ee3565b63b95aa35560e01b600052603260045260246000fd5b600082825180855260208086019550808260051b84010181860160005b84811015611ac857601f1986840301895281516060815160098110611fb657611fb6611df7565b855281860151868601829052611fce82870182611a51565b91505060408083015192508582038187015250611feb8183611a51565b9a86019a9450505090830190600101611f8f565b602081526000611ae86020830184611f72565b60006020828403121561202457600080fd5b815163ffffffff81168114611ae857600080fd5b60608152600061204b6060830185611f72565b9050611ae86020830184805163ffffffff908116835260209182015116910152565b600082601f83011261207e57600080fd5b8151602061208e61186f836118a6565b82815260059290921b840181019181810190868411156120ad57600080fd5b8286015b848110156108405780516001600160401b038111156120d05760008081fd5b6120de8986838b0101611ee3565b8452509183019183016120b1565b6000604082840312156120fe57600080fd5b604051604081016001600160401b038282108183111715612121576121216117bb565b81604052829350845191508082111561213957600080fd5b61214586838701611ee3565b8352602085015191508082111561215b57600080fd5b506121688582860161206d565b6020830152505092915050565b6000602080838503121561218857600080fd5b82516001600160401b038082111561219f57600080fd5b818501915085601f8301126121b357600080fd5b81516121c161186f826118a6565b81815260059190911b830184019084810190888311156121e057600080fd5b8585015b83811015612218578051858111156121fc5760008081fd5b61220a8b89838a01016120ec565b8452509186019186016121e4565b5098975050505050505050565b60006000198214156122475763b95aa35560e01b600052601160045260246000fd5b5060010190565b602081526000611ae86020830184611a51565b60006020828403121561227357600080fd5b81516001600160401b038082111561228a57600080fd5b908301906060828603121561229e57600080fd5b6122a66117d1565b8251600281106122b557600080fd5b81526020830151828111156122c957600080fd5b6122d587828601611ee3565b6020830152506040830151828111156122ed57600080fd5b6122f98782860161206d565b60408301525095945050505050565b6000815180845260208085019450848260051b860182860160005b85811015611ac857838303895281516040815181865261234582870182611a51565b9150508682015191508481038786015261235f8183611a51565b9a87019a9450505090840190600101612323565b6040815260006123866040830185611a51565b8281036020840152610b498185612308565b6000602082840312156123aa57600080fd5b81516001600160401b038111156123c057600080fd5b610518848285016120ec565b6080815260006123df6080830186611f72565b6123ff6020840186805163ffffffff908116835260209182015116910152565b82810360608401526115508185612308565b60208152600082516040602084015261242d6060840182611a51565b90506020840151601f19848303016040850152610b498282611e0d56fea264697066735822122090c443e7b5a5755c771420a99310438e60da399590b99936b2e432a92161df1b64736f6c634300080b0033"};

    public static final String SM_BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", SM_BINARY_ARRAY);

    public static final String[] ABI_ARRAY = {"[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"CreateResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"InsertResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"RemoveResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"UpdateResult\",\"type\":\"event\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"idLow\",\"type\":\"int64\"},{\"internalType\":\"int64\",\"name\":\"idHigh\",\"type\":\"int64\"}],\"name\":\"count\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"selector\":[4118138272,646094972],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"tableName\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"keyOrder\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"fields\",\"type\":\"string[]\"}],\"name\":\"createTable\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"selector\":[2361884286,91595293],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[],\"name\":\"desc\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"selector\":[1441878257,1966441124],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"id\",\"type\":\"int64\"},{\"internalType\":\"string\",\"name\":\"petName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"petType\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"sellerId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"petPrice\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"status\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"imgUrl\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"isDeleted\",\"type\":\"string\"}],\"name\":\"insert\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"selector\":[1735833239,3655707502],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"idLow\",\"type\":\"int64\"},{\"internalType\":\"int64\",\"name\":\"idHigh\",\"type\":\"int64\"}],\"name\":\"remove\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"selector\":[2998856592,2181577930],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"id\",\"type\":\"int64\"}],\"name\":\"remove\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"selector\":[3944264839,2426386621],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"idLow\",\"type\":\"int64\"},{\"internalType\":\"int64\",\"name\":\"idHigh\",\"type\":\"int64\"}],\"name\":\"select\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"selector\":[1116732347,887486729],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"id\",\"type\":\"int64\"}],\"name\":\"select\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"selector\":[3082979382,2331271212],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"id\",\"type\":\"int64\"},{\"internalType\":\"string\",\"name\":\"petName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"petType\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"sellerId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"petPrice\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"status\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"imgUrl\",\"type\":\"string\"}],\"name\":\"update\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"selector\":[2199455815,2183551381],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"idLow\",\"type\":\"int64\"},{\"internalType\":\"int64\",\"name\":\"idHigh\",\"type\":\"int64\"}],\"name\":\"update\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"selector\":[3680251819,3586562291],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"};

    public static final String ABI = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", ABI_ARRAY);

    public static final String FUNC_COUNT = "count";

    public static final String FUNC_CREATETABLE = "createTable";

    public static final String FUNC_DESC = "desc";

    public static final String FUNC_INSERT = "insert";

    public static final String FUNC_REMOVE = "remove";

    public static final String FUNC_SELECT = "select";

    public static final String FUNC_UPDATE = "update";

    public static final Event CREATERESULT_EVENT = new Event("CreateResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    public static final Event INSERTRESULT_EVENT = new Event("InsertResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    public static final Event REMOVERESULT_EVENT = new Event("RemoveResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    public static final Event UPDATERESULT_EVENT = new Event("UpdateResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    protected PetContract(String contractAddress, Client client, CryptoKeyPair credential) {
        super(getBinary(client.getCryptoSuite()), contractAddress, client, credential);
        this.transactionManager = new ProxySignTransactionManager(client);
    }

    public static String getBinary(CryptoSuite cryptoSuite) {
        return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY);
    }

    public static String getABI() {
        return ABI;
    }

    public List<CreateResultEventResponse> getCreateResultEvents(
            TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(CREATERESULT_EVENT, transactionReceipt);
        ArrayList<CreateResultEventResponse> responses = new ArrayList<CreateResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            CreateResultEventResponse typedResponse = new CreateResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeCreateResultEvent(BigInteger fromBlock, BigInteger toBlock,
            List<String> otherTopics, EventSubCallback callback) {
        String topic0 = eventEncoder.encode(CREATERESULT_EVENT);
        subscribeEvent(topic0,otherTopics,fromBlock,toBlock,callback);
    }

    public void subscribeCreateResultEvent(EventSubCallback callback) {
        String topic0 = eventEncoder.encode(CREATERESULT_EVENT);
        subscribeEvent(topic0,callback);
    }

    public List<InsertResultEventResponse> getInsertResultEvents(
            TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(INSERTRESULT_EVENT, transactionReceipt);
        ArrayList<InsertResultEventResponse> responses = new ArrayList<InsertResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            InsertResultEventResponse typedResponse = new InsertResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeInsertResultEvent(BigInteger fromBlock, BigInteger toBlock,
            List<String> otherTopics, EventSubCallback callback) {
        String topic0 = eventEncoder.encode(INSERTRESULT_EVENT);
        subscribeEvent(topic0,otherTopics,fromBlock,toBlock,callback);
    }

    public void subscribeInsertResultEvent(EventSubCallback callback) {
        String topic0 = eventEncoder.encode(INSERTRESULT_EVENT);
        subscribeEvent(topic0,callback);
    }

    public List<RemoveResultEventResponse> getRemoveResultEvents(
            TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(REMOVERESULT_EVENT, transactionReceipt);
        ArrayList<RemoveResultEventResponse> responses = new ArrayList<RemoveResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            RemoveResultEventResponse typedResponse = new RemoveResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeRemoveResultEvent(BigInteger fromBlock, BigInteger toBlock,
            List<String> otherTopics, EventSubCallback callback) {
        String topic0 = eventEncoder.encode(REMOVERESULT_EVENT);
        subscribeEvent(topic0,otherTopics,fromBlock,toBlock,callback);
    }

    public void subscribeRemoveResultEvent(EventSubCallback callback) {
        String topic0 = eventEncoder.encode(REMOVERESULT_EVENT);
        subscribeEvent(topic0,callback);
    }

    public List<UpdateResultEventResponse> getUpdateResultEvents(
            TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(UPDATERESULT_EVENT, transactionReceipt);
        ArrayList<UpdateResultEventResponse> responses = new ArrayList<UpdateResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            UpdateResultEventResponse typedResponse = new UpdateResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeUpdateResultEvent(BigInteger fromBlock, BigInteger toBlock,
            List<String> otherTopics, EventSubCallback callback) {
        String topic0 = eventEncoder.encode(UPDATERESULT_EVENT);
        subscribeEvent(topic0,otherTopics,fromBlock,toBlock,callback);
    }

    public void subscribeUpdateResultEvent(EventSubCallback callback) {
        String topic0 = eventEncoder.encode(UPDATERESULT_EVENT);
        subscribeEvent(topic0,callback);
    }

    public BigInteger count(BigInteger idLow, BigInteger idHigh) throws ContractException {
        final Function function = new Function(FUNC_COUNT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint32>() {}));
        return executeCallWithSingleValueReturn(function, BigInteger.class);
    }

    public Function getMethodCountRawFunction(BigInteger idLow, BigInteger idHigh) throws
            ContractException {
        final Function function = new Function(FUNC_COUNT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint32>() {}));
        return function;
    }

    public TransactionReceipt createTable(String tableName, BigInteger keyOrder, String key,
            List<String> fields) {
        final Function function = new Function(
                FUNC_CREATETABLE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(tableName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8(keyOrder), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(key), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray<org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String>(
                        org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class,
                        org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodCreateTableRawFunction(String tableName, BigInteger keyOrder,
            String key, List<String> fields) throws ContractException {
        final Function function = new Function(FUNC_CREATETABLE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(tableName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8(keyOrder), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(key), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray<org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String>(
                        org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class,
                        org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
        return function;
    }

    public String getSignedTransactionForCreateTable(String tableName, BigInteger keyOrder,
            String key, List<String> fields) {
        final Function function = new Function(
                FUNC_CREATETABLE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(tableName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8(keyOrder), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(key), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray<org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String>(
                        org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class,
                        org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String createTable(String tableName, BigInteger keyOrder, String key,
            List<String> fields, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_CREATETABLE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(tableName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8(keyOrder), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(key), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray<org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String>(
                        org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class,
                        org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple4<String, BigInteger, String, List<String>> getCreateTableInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_CREATETABLE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Uint8>() {}, new TypeReference<Utf8String>() {}, new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple4<String, BigInteger, String, List<String>>(

                (String) results.get(0).getValue(), 
                (BigInteger) results.get(1).getValue(), 
                (String) results.get(2).getValue(), 
                convertToNative((List<Utf8String>) results.get(3).getValue())
                );
    }

    public Tuple1<BigInteger> getCreateTableOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_CREATETABLE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public Tuple2<String, List<String>> desc() throws ContractException {
        final Function function = new Function(FUNC_DESC, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> results = executeCallWithMultipleValueReturn(function);
        return new Tuple2<String, List<String>>(
                (String) results.get(0).getValue(), 
                convertToNative((List<Utf8String>) results.get(1).getValue()));
    }

    public Function getMethodDescRawFunction() throws ContractException {
        final Function function = new Function(FUNC_DESC, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<DynamicArray<Utf8String>>() {}));
        return function;
    }

    public TransactionReceipt insert(BigInteger id, String petName, String petType, String sellerId,
            String petPrice, String status, String imgUrl, String isDeleted) {
        final Function function = new Function(
                FUNC_INSERT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(petName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(petType), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(sellerId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(petPrice), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(status), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(imgUrl), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(isDeleted)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodInsertRawFunction(BigInteger id, String petName, String petType,
            String sellerId, String petPrice, String status, String imgUrl, String isDeleted) throws
            ContractException {
        final Function function = new Function(FUNC_INSERT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(petName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(petType), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(sellerId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(petPrice), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(status), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(imgUrl), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(isDeleted)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        return function;
    }

    public String getSignedTransactionForInsert(BigInteger id, String petName, String petType,
            String sellerId, String petPrice, String status, String imgUrl, String isDeleted) {
        final Function function = new Function(
                FUNC_INSERT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(petName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(petType), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(sellerId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(petPrice), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(status), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(imgUrl), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(isDeleted)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String insert(BigInteger id, String petName, String petType, String sellerId,
            String petPrice, String status, String imgUrl, String isDeleted,
            TransactionCallback callback) {
        final Function function = new Function(
                FUNC_INSERT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(petName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(petType), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(sellerId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(petPrice), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(status), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(imgUrl), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(isDeleted)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple8<BigInteger, String, String, String, String, String, String, String> getInsertInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_INSERT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int64>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple8<BigInteger, String, String, String, String, String, String, String>(

                (BigInteger) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                (String) results.get(2).getValue(), 
                (String) results.get(3).getValue(), 
                (String) results.get(4).getValue(), 
                (String) results.get(5).getValue(), 
                (String) results.get(6).getValue(), 
                (String) results.get(7).getValue()
                );
    }

    public Tuple1<BigInteger> getInsertOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_INSERT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public TransactionReceipt remove(BigInteger idLow, BigInteger idHigh) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodRemoveRawFunction(BigInteger idLow, BigInteger idHigh) throws
            ContractException {
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        return function;
    }

    public String getSignedTransactionForRemove(BigInteger idLow, BigInteger idHigh) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String remove(BigInteger idLow, BigInteger idHigh, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple2<BigInteger, BigInteger> getRemoveInt64Int64Input(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int64>() {}, new TypeReference<Int64>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<BigInteger, BigInteger>(

                (BigInteger) results.get(0).getValue(), 
                (BigInteger) results.get(1).getValue()
                );
    }

    public Tuple1<BigInteger> getRemoveInt64Int64Output(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public TransactionReceipt remove(BigInteger id) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodRemoveRawFunction(BigInteger id) throws ContractException {
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        return function;
    }

    public String getSignedTransactionForRemove(BigInteger id) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String remove(BigInteger id, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple1<BigInteger> getRemoveInt64Input(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int64>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public Tuple1<BigInteger> getRemoveInt64Output(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public List select(BigInteger idLow, BigInteger idHigh) throws ContractException {
        final Function function = new Function(FUNC_SELECT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> result = (List<Type>) executeCallWithSingleValueReturn(function, List.class);
        return convertToNative(result);
    }

    public Function getMethodSelectRawFunction(BigInteger idLow, BigInteger idHigh) throws
            ContractException {
        final Function function = new Function(FUNC_SELECT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Utf8String>>() {}));
        return function;
    }

    public Tuple7<String, String, String, String, String, String, String> select(BigInteger id)
            throws ContractException {
        final Function function = new Function(FUNC_SELECT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        List<Type> results = executeCallWithMultipleValueReturn(function);
        return new Tuple7<String, String, String, String, String, String, String>(
                (String) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                (String) results.get(2).getValue(), 
                (String) results.get(3).getValue(), 
                (String) results.get(4).getValue(), 
                (String) results.get(5).getValue(), 
                (String) results.get(6).getValue());
    }

    public Function getMethodSelectRawFunction(BigInteger id) throws ContractException {
        final Function function = new Function(FUNC_SELECT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        return function;
    }

    public TransactionReceipt update(BigInteger id, String petName, String petType, String sellerId,
            String petPrice, String status, String imgUrl) {
        final Function function = new Function(
                FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(petName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(petType), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(sellerId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(petPrice), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(status), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(imgUrl)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodUpdateRawFunction(BigInteger id, String petName, String petType,
            String sellerId, String petPrice, String status, String imgUrl) throws
            ContractException {
        final Function function = new Function(FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(petName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(petType), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(sellerId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(petPrice), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(status), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(imgUrl)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        return function;
    }

    public String getSignedTransactionForUpdate(BigInteger id, String petName, String petType,
            String sellerId, String petPrice, String status, String imgUrl) {
        final Function function = new Function(
                FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(petName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(petType), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(sellerId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(petPrice), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(status), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(imgUrl)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String update(BigInteger id, String petName, String petType, String sellerId,
            String petPrice, String status, String imgUrl, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(petName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(petType), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(sellerId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(petPrice), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(status), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(imgUrl)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple7<BigInteger, String, String, String, String, String, String> getUpdateInt64StringStringStringStringStringStringInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_UPDATE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int64>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple7<BigInteger, String, String, String, String, String, String>(

                (BigInteger) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                (String) results.get(2).getValue(), 
                (String) results.get(3).getValue(), 
                (String) results.get(4).getValue(), 
                (String) results.get(5).getValue(), 
                (String) results.get(6).getValue()
                );
    }

    public Tuple1<BigInteger> getUpdateInt64StringStringStringStringStringStringOutput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_UPDATE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public TransactionReceipt update(BigInteger idLow, BigInteger idHigh) {
        final Function function = new Function(
                FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodUpdateRawFunction(BigInteger idLow, BigInteger idHigh) throws
            ContractException {
        final Function function = new Function(FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        return function;
    }

    public String getSignedTransactionForUpdate(BigInteger idLow, BigInteger idHigh) {
        final Function function = new Function(
                FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String update(BigInteger idLow, BigInteger idHigh, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple2<BigInteger, BigInteger> getUpdateInt64Int64Input(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_UPDATE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int64>() {}, new TypeReference<Int64>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<BigInteger, BigInteger>(

                (BigInteger) results.get(0).getValue(), 
                (BigInteger) results.get(1).getValue()
                );
    }

    public Tuple1<BigInteger> getUpdateInt64Int64Output(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_UPDATE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public static PetContract load(String contractAddress, Client client, CryptoKeyPair credential) {
        return new PetContract(contractAddress, client, credential);
    }

    public static PetContract deploy(Client client, CryptoKeyPair credential) throws
            ContractException {
        return deploy(PetContract.class, client, credential, getBinary(client.getCryptoSuite()), getABI(), null, null);
    }

    public static class CreateResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class InsertResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class RemoveResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class UpdateResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }
}
